package com.hbnu.boot.config;

//import com.alibaba.druid.FastsqlException;
import com.hbnu.boot.bean.Pig;
import com.hbnu.boot.bean.Sheep;
import com.hbnu.boot.bean.User;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.boot.context.properties.EnableConfigurationProperties;
import org.springframework.context.annotation.Bean;
import org.springframework.context.annotation.Configuration;
import org.springframework.context.annotation.Import;
import org.springframework.context.annotation.Scope;

/**
 * @Auther: hjx
 * @Date: 2023/6/12 13:44
 * @Description:
 */
@EnableConfigurationProperties(Sheep.class)     //导入第三方写好的组件进行绑定
//SpringBoot默认只扫描自己主程序所在的包。如果导入第三方包，即使组件上标注了@Component、@ConfigurationProperties注解
//也没有用。因为组件都扫描不进来
/**
 * 以上对@EnableConfigurationProperties注解说明
 * 1、开启Sheep的属性绑定
 * 2、默认会把这个组件自己放到容器中
 * */
//@Import(FastsqlException.class) //给容器中放指定类型的组件，组建的名字默认是全类名
@Configuration  //这是一个配置类，替代以前的配置文件，配置类本身也是容器中的组件
public class AppConfig {

    /**
     * 1.组件默认是单实例的
     * */
//    @Scope("prototype")     //多实例标签，每次获取都会重新创建一个新的实例
    @Bean  //替代以前的Bean标签，往容器中放组件,组件在容器中的名字默认是方法名，可以直接修改注解格式
    public User user() {
        var user = new User();
        user.setId(1L);
        user.setUsername("hjx");
        return user;
    }
    @Bean
    @ConfigurationProperties(prefix = "pig")
    public Pig pig(){
        return new Pig();
    }




}

